package EP::Visualization::Cell;

use strict;
use Data::UUID;

sub new {
  my $proto = shift;
  my $class = ref($proto) || $proto;
  my $self = {};
  bless $self, $class;

  my $ug = new Data::UUID;
  $self->{ID} = $ug->create_str();

  $self->{hasObject}=0;
  return $self;
}

##########################################
#set ID of cell, can be used if you want #
#to give each cell a specific ID         #
##########################################

sub setID{
 my $self = shift;
 my $id = shift;
 $self->{ID}=$id;
 return;
}

###########################################
#returns the cell ID                      #
###########################################

sub getID {
 my $self = shift;
 return $self->{ID};
}

#######################################################
#set the height and width of the cell   (old method)  #
#######################################################

#sub setDimension {
#  my $self = shift;
#  my ($height, $width) = @_;
#  $self->{Height}=$height;
#  $self->{Width}=$width;
#  return;
#}

##########################################
#places a graphic object into the cell   #
##########################################

sub setGraphicObject {
  my $self=shift;
  my $obj =shift;
  $self->{object}=$obj;
  $obj->{parentCell} = $self;
  $self->{hasObject}=1;
  return;
}

###########################################
#returns boolean to indicate if a graphics#
#bject is present or not                  #
###########################################

sub hasObject{
  my $self=shift;
  return $self->{hasObject};
}

################################################
#returns the graphic object present in the cell#
################################################

sub getGraphicObject {
  my $self=shift;
  return $self->{object};
}


#############################
#sets height of the cell    #
############################

sub setHeight{
 my $self = shift;
 my $height = shift;
 $self->{height}=$height;
 return;
}

############################
#sets width of the cell    #
############################

sub setWidth {
 my $self = shift;
 my $width = shift;
 $self->{width}=$width;
 return;
}

#############################
#gets height of the cell    #
#############################

sub getHeight {
  my $self=shift;
  return $self->{height};
}

#############################
#gets width of the cell     #
#############################

sub getWidth{
  my $self=shift;
  return $self->{width};
}


1;
